iT邦幫忙

0

資料結構_數組元素循環右移

  • 分享至 

  • xImage
  •  

題目

  • Input : 第一行輸入 N(1≤N≤100)、M(≥0),以空格隔開
  • Input : 第二行輸入N個整數,以空格隔開
  • Output : 將N個整數循環右移M位輸出,元素間以空格隔開,結尾不可有空格
  • Example:
    Input : 3 1
    Input : 1 2 3
    Output : 2 3 1

第一版,(大錯特錯)

  • 空list時,不能指定特定Index值(list[1] = 1) @@
sInput1 = input()
sInput2 = input()
i_num = int(sInput1.split()[0])
i_move = int(sInput1.split()[-1])
lst = sInput2.split()
lst_rtn = []

for i in range(i_num):
    print(i,lst[i],(i+i_move)%i_num)
    lst_rtn[(i+i_move)%i_num] = lst[i]
print(lst)
print(lst_rtn)

執行

6 2 #Input
1 2 3 4 5 6 #Input
Traceback (most recent call last):
  File "D:move.py", line 8, in <module>
    lst_rtn[(i+i_move)%i_num] = lst[i]
IndexError: list assignment index out of range

第二版,照順序append進list()

  • 先找出右移後Index=0的那個值
  • 再從那個值開始一個一個append進list()
sInput1 = input()
sInput2 = input()
i_num = int(sInput1.split()[0])
i_move = int(sInput1.split()[-1])
lst = sInput2.split()
lst_rtn = []
str = ''

#iIndex = i_num - i_move + (i_num * int(i_move/i_num))
iIndex = i_num * (int(i_move/i_num) + 1) - i_move
for i in range(i_num):
    #lst_rtn.append(lst[iIndex % i_num])
    str += lst[iIndex % i_num] + ' '
    iIndex +=1

print(str.rstrip())
#print(lst)
#print(lst_rtn)

本文純自己做題目之筆記,如有更好的方法再麻煩各位指教~~


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言